/**
 * 接口（interface），用来描述对象的属性、行为、抽象的概念
 * 描述一个人的对象（接口）
 * id：number、必选、不能修改（只读）
 * name：string、必选
 * age：number、必选
 * sex：boolean、必选
 * phone：number、非必选
 * email：string、非必选
 * action：any、必选（行为）
 * work：any、必选（行为）
 */

// 语法：interface 接口名称（对象名称）{属性、行为、抽象}
//非必选：英文的?
//只读：readonly
interface IPerson{
    readonly id:number,
    name:string,
    age:number,
    sex:boolean,
    phone ?:number,
    email ?:string,
    action:any,
    work:any
}

const person:IPerson = {
    id:1,
    name:"张三",
    age:20,
    sex:true,
    phone:10086,
    action:function(){
        return `${person.name}在吃饭`
    },
    work:function(){
        return `${this.name}在工作`
    }
}

// person.id = 2
//readonly 只读属性，只允许在第一次给属性赋值时修改，一旦赋值就无法再修改
// ？可选属性，属性在赋值时是可选的

console.log(person);
console.log(person.action());
console.log(person.work());


